package com.shen.library_nettysocket.listener

import com.shen.library_nettysocket.protobuf.MessageProtobuf.Msg

/**
 * 与「应用层」交互的「listener」
 */
interface OnEventListener {

    /** 分发[msg]消息到「应用层」 */
    fun dispatchMsg(msg: Msg?)

    /** 从「应用层」获取「网络·是否可用」 */
    val isNetworkAvailable: Boolean

    /** 获取「重连·间隔」时长 */
    val reconnectInterval: Int
    /** 获取「连接·超时」时长 */
    val connectTimeout: Int

    /** 获取 应用层「消息发送·超时」重发·次数 */
    val resendCount: Int
    /** 获取 应用层「消息发送·超时」重发·间隔 */
    val resendInterval: Int

    /** 获取 应用在「前台」时「心跳间隔」时间 */
    val foregroundHeartbeatInterval: Int
    /** 获取 应用在「后台」时「心跳间隔」时间 */
    val backgroundHeartbeatInterval: Int

    /** 获取 由「应用层」构造的「握手消息」 */
    val handshakeMsg: Msg?
    /** 获取 由「应用层」构造的「心跳消息」 */
    val heartbeatMsg: Msg?

    /** 获取 应用层「消息·发送·状态报告」消息类型 */
    val serverSentReportMsgType: Int
    /** 获取 应用层「消息·接收·状态报告」消息类型 */
    val clientReceivedReportMsgType: Int

}